package com.meida.module.bus.provider.controller;

import com.meida.common.base.utils.FlymeUtils;
import com.meida.common.mybatis.model.ResultBody;
import com.meida.common.springmvc.base.BaseController;
import com.meida.module.bus.client.entity.BusOrder;
import com.meida.module.bus.client.enums.OrderStatePEnum;
import com.meida.module.bus.client.enums.OrderStateYEnum;
import com.meida.module.bus.client.enums.OrderStateZEnum;
import com.meida.module.bus.provider.service.BusOrderService;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;

import java.util.Map;


/**
 * 订单表控制器
 *
 * @author flyme
 * @date 2021-08-03
 */
@RestController
@RequestMapping("/order/")
public class BusOrderController extends BaseController<BusOrderService, BusOrder> {

    @ApiOperation(value = "订单表-分页列表", notes = "订单表分页列表")
    @GetMapping(value = "page")
    public ResultBody pageList(@RequestParam(required = false) Map params) {
        return bizService.pageList(params);
    }

    @ApiOperation(value = "订单表-列表", notes = "订单表列表")
    @GetMapping(value = "list")
    public ResultBody list(@RequestParam(required = false) Map params) {
        return bizService.listEntityMap(params);
    }

    @ApiOperation(value = "订单表-添加", notes = "添加订单表")
    @PostMapping(value = "save")
    public ResultBody save(@RequestParam(required = false) Map params) {
        Object orderId = params.get("orderId");
        if (FlymeUtils.isNotEmpty(orderId)) {
            params.put("handlerName", "updateOrderHandler");
            return bizService.edit(params).setMsg("");
        }
        params.put("handlerName", "submitOrderHandler");
        return bizService.add(params).setMsg("");
    }

    @ApiOperation(value = "订单表-更新", notes = "更新订单表")
    @PostMapping(value = "update")
    public ResultBody update(@RequestParam(required = false) Map params) {
        return bizService.edit(params);
    }

    @ApiOperation(value = "订单表-删除", notes = "删除订单表")
    @PostMapping(value = "remove")
    public ResultBody remove(@RequestParam(required = false) Map params) {
        return bizService.delete(params);
    }

    @ApiOperation(value = "订单表-逻辑删除", notes = "订单表-逻辑删除")
    @PostMapping(value = "deleteById")
    public ResultBody deleteById(Long orderId) {
        return bizService.deleteById(orderId);
    }

    @ApiOperation(value = "订单表-详情", notes = "订单表详情")
    @GetMapping(value = "get")
    public ResultBody get(@RequestParam(required = false) Map params) {
        return bizService.get(params);
    }

    @ApiOperation(value = "订单状态定义", notes = "订单状态定义")
    @GetMapping(value = "getOrderStateList")
    public ResultBody getOrderStateList(Integer orderType) {
        if (FlymeUtils.isNotEmpty(orderType)) {
            if (orderType.equals(1)) {
                return ResultBody.ok(OrderStatePEnum.values());
            }
            if (orderType.equals(2)) {
                return ResultBody.ok(OrderStateYEnum.values());
            }
            if (orderType.equals(3)) {
                return ResultBody.ok(OrderStateZEnum.values());
            }
        }
        return ResultBody.ok();
    }

    @ApiOperation(value = "获取订单答案Id", notes = "获取订单答案Id")
    @GetMapping(value = "getOrderAnswerId")
    public ResultBody getOrderAnswerId(Long orderId) {
        return bizService.getOrderAnswerId(orderId);
    }


    @ApiOperation(value = "获取灵动课堂信息", notes = "获取灵动课堂信息")
    @GetMapping(value = "getEnterClassRoomInfo")
    public ResultBody getEnterClassRoomInfo(Long orderId) {
        return bizService.getEnterClassRoomInfo(orderId);
    }
}
